perm filename IDEAS[225,JMC] blob
sn#005361 filedate 1971-01-05 generic text, type T, neo UTF8
00100 Heuristics, as a branch of artificial intelligence, is
00200 concerned with intellectual mechanisms of problem solving. We shall
00300 regard it as distinct from epistemology and also distinct from
00400 linguistics.
00500
00600 (Epistemology is concerned with the kinds of information that
00700 must be represented in the machine in order to solve certain problems
00800 and with how this information may be obtained. Linguistics is
00900 concerned with the relation between information and the way it is
01000 expressed for the purposes of communication).
01100
01200 The following kinds of heuristics are known:
01300
01400 1. Searching trees of alternatives. There are various
01500 heuristics designed to speed up such searches such as the
01600 αβ-heuristic, killer and anti-killer, impatience, servo-mechanism,
01700
01800 2. Decomposition. A problem is divided into subproblems
01900 which may be solved at least somewhat independently. Planning and
02000 localization in game playing are examples of this.
02100
02200 3. Guessing. Confirming a guessed correct solution is often
02300 vastly less work than finding a solution in an unprejudiced way.
00000 APHORISMS
00100 1. There are four vices:
00200 a. Mathematics.
00300 b. Hardware.
00400 c. Kludge building.
00500 d. Look ma, no hands.
00600
00700 These vices may be explained as follows: Mathematics: When a
00800 mathematician looks at artificial intelligence, he wants to find some
00900 part of it he can prove theorems about. Unfortunately, this often
01000 leads to siezing a minor part of the subject and proving theorems
01100 under extremely simplifying assumptions. In our field, this is
01200 especially bad, because often complexity is the essence of the
01300 matter, and moreover computers permit us to construct very complex
01400 systems rather easily. Examples of related but essentially useless
01500 activities are perceptron and allied theories of pattern recognition,
01600 automata theory, and the concentration on frustration theorems in
01700 formal languages. Let me damn the whole theory of formal languages
01800 while I'm at it. It is somewhat unfair to the practitioners and
01900 partisans of these theories to not give more detailed arguments, and
02000 I recognise the obligation to elaborate this section later.
02100
02200 Hardware: This early vice has mostly been overcome. It consisted of
02300 desiring to build a special piece of hardware to carry out an
02400 algorithm efficiently before verifying by program that the algorithm
02500 was worthwhile and without taking into account future needs to vary
02600 the algorithm drastically.
02700
02800 Kludge building: This consists of making AI experimental programs
02900 that contain little bits of different parts of AI. STUDENT and SIR
03000 are subject to this criticism in that they do a little bit of English
03100 language processing followed by a little bit of tree search and
03200 formal reasoning. To the extent that we have succeeded in dividing
03300 the AI problem into parts that can be tackled separately, it is best
03400 to concentrate on only one problem at a time. Thus, an experimental
03500 theorem prover should not have an English language front end. More
03600 will be learned by concentrating the effort all on the theorem
03700 proving. Of course, systems designed for practical use will
03800 inevitably be kludges, but then they should ordinarily embody the
03900 present state of whatever arts they use rather than try to advance
04000 them.
04100
04200 Look ma, no hands: Students, especially, have a tendency to write
04300 programs to play games or do other intellectual tasks with no goal in
04400 mind but to see them work. It is usually necessary to have an idea
04500 in mind about what is to be learned from an experiment before the
04600 experiment is worth doing.
04700
04800 2. When writing a program to solve a problem, ask how much
04900 work it would take to verify a correct answer together with its
05000 supporting information. Then try to find a way of guessing the
05100 answer and the supporting information. This will usually be faster
05200 than a blind search. The structure of the answer + supporting
05300 information should be chosen so as to minimize the effort required to
05400 verify the answer.